import { _decorator, Component, Collider2D, Contact2DType, IPhysics2DContact, Node, RigidBody2D, v2, Animation } from 'cc';
import { GameManager } from './GameManager';

const { ccclass, property } = _decorator;
@ccclass('Bullet')
export class Bullet extends Component {

    @property(Node)
    gameManager:Node= null;

    speed = 350; // 子弹的速度（像素/秒）
    ani:Animation;

    private rb:RigidBody2D;


    start() {
        // 设置子弹一开始不受重力影响，当碰到弓箭后受影响
        this.rb = this.node.getComponent(RigidBody2D);
        //gravityScale用来控制刚体受到重力影响的强度。
        this.rb.gravityScale = 0;
        // const collider = this.getComponent(Collider2D);
        // collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
        // console.log('子弹碰撞弓箭事件')
         this.ani = this.getComponent(Animation);
         // 7秒后切换动画
        // this.scheduleOnce(() => {
        //     this.ani.play('BulletDie');
        // }, 7);
    }


  
    update(deltaTime: number) {
        const pos = this.node.position;
        this.node.setPosition(pos.x + this.speed * deltaTime, pos.y);

        if (this.node.position.y < -640 || this.node.position.y>650 || this.node.position.x < -360 ||this.node.position.x >370) {
            this.node.destroy();
        }
    }

    changeGravity(){
        this.rb.gravityScale = 2;
    }


    // onBeginContact(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact) {
    //     console.log('子弹碰到了弓箭')
    //     const other = otherCollider.node;
    //     // 子弹碰到的是弓箭，弓箭向右侧随机方向弹走
    //     if (other.name.includes('Arrow')) {
    //         const rb = other.getComponent(RigidBody2D);
    //         rb.gravityScale = 1; // 开启受重力影响
    //         // 生成一个向右（x > 0）方向的随机速度
    //         const randomY = Math.random() * 10 - 5; // -50 ~ 50
    //         const velocity = v2(25, randomY); // 向右 + 上/下 的速度
    //         rb.linearVelocity = velocity;
    //         // // 物理碰撞回调中的逻辑不要直接添加或销毁带刚体的节点，需要晚一会
    //         // this.scheduleOnce(() => {
    //         //     // 子弹自身销毁
    //         //     this.node.destroy();
    //         // }, 5);
    //     }
    // }
}

